Spring Data Redis与Redisson对比
Spring Data Redis
Spring Data Redis是更大的Spring Data系列的一部分,可以从Spring应用程序轻松配置和访问Redis。它提供了与商店交互的低级和高级抽象,使用户免于基础设施问题。Spring Boot 从 2.0版本开始,将默认的Redis客户端Jedis替换问Lettuce。
特性
- 连接包作为多个Redis驱动程序/连接器的低级抽象(Jedis和Lettuce。不推荐支持JRedis和SRP。)
- 异常转换到Spring的便携式数据访问异常层次结构Redis的驱动程序例外
- RedisTemplate,提供高级抽象,用于执行各种Redis操作,异常转换和序列化支持
- Pubsub支持(例如消息驱动的POJO的MessageListenerContainer)
- Redis Sentinel和Redis Cluster支持
- JDK,String,JSON和Spring Object / XML映射序列化程序
- 在Redis之上的JDK Collection实现
- 原子计数器支持classes
- 排序和流水线功能
- 专门支持SORT,SORT / GET模式和返回的批量值
- Redis 实现了Spring 3.1缓存抽象
- 自动实现Repository接口,包括支持自定义查找程序方法@EnableRedisRepositories
- CDI对存储库的支持
使用
在pom.xml
中加入
1 | <dependency> |
在application.yml
中加入
1 | spring: |
加入配置类
1 |
|
代码使用
1 |
|
Redisson
Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。其中包括(BitSet, Set, Multimap, SortedSet, Map, List, Queue, BlockingQueue, Deque, BlockingDeque, Semaphore, Lock, AtomicLong, CountDownLatch, Publish / Subscribe, Bloom filter, Remote service, Spring cache, Executor service, Live Object service, Scheduler service) Redisson提供了使用Redis的最简单和最便捷的方法。Redisson的宗旨是促进使用者对Redis的关注分离(Separation of Concern),从而让使用者能够将精力更集中地放在处理业务逻辑上。能够完美的在云计算环境里使用,并且支持AWS ElastiCache主备版,AWS ElastiCache集群版,Azure Redis Cache和阿里云(Aliyun)的云数据库Redis版。Redisson底层采用的是Netty 框架。支持Redis 2.8以上版本,支持Java1.6+以上版本。
Redisson作为独立节点 可以用于独立执行其他节点发布到分布式执行服务 和 分布式调度任务服务 里的远程任务。
特性
- 复制的Redis服务器模式(还支持AWS ElastiCache和Azure Redis缓存):
- 自动主服务器更改发现
- 群集Redis服务器模式(还支持AWS ElastiCache和Azure Redis缓存:
- 自动主从服务器发现
- 自动状态和拓扑更新
- 自动插槽更改发现
- Sentinel Redis服务器模式:
- 自动主,从和服务器发现
- 自动状态和拓扑更新
- 掌握Slave Redis服务器模式
- 单Redis服务器模式
- 线程安全的实现
- Reactive Streams API
- 异步 API
- 异步连接池
- Lua脚本
- 分布式Java对象
Object holder,Binary stream holder,Geospatial holder,BitSet,AtomicLong,AtomicDouble,PublishSubscribe,Bloom filter,HyperLogLog - 分布式Java集合
Map,Multimap,Set,List,SortedSet,ScoredSortedSet,LexSortedSet,Queue,Deque,Blocking Queue,Bounded Blocking Queue,Blocking Deque,Delayed Queue,Priority Queue,Priority Deque - 分布式Java锁和同步器
Lock,FairLock,MultiLock,RedLock,ReadWriteLock,Semaphore,PermitExpirableSemaphore,CountDownLatch - 分布式服务
远程服务,Live Object服务,Executor服务,Scheduler服务,MapReduce服务 - Spring框架
- Spring Cache实现
- Spring Transaction API实现 - Spring Data Redis集成
- Spring Boot Starter实现
- Hibernate Cache实现
- Transactions API
- XA Transaction API实现 - JCache API(JSR-107)实现
- Tomcat会话管理器实现
- Spring Session实现
- Redis流水线(命令批处理)
- 支持Android平台
- 支持自动重新连接
- 支持无法发送命令自动重试
- 支持OSGi
- 支持SSL
- 支持许多流行的编解码器(Jackson JSON,Avro,Smile,CBOR,MsgPack,Kryo,Amazon Ion,FST,LZ4,Snappy和JDK Serialization)
- 超过1800个单元测试
与spring-data-redis结合使用
pom.xml
加入依赖
1 | <dependency> |
在resources
文件夹添加配置文件redisson.yml
1 | #Redisson配置 |
注册RedissonConnectionFactory
1 |
|
代码使用
1 |
|
结论
spring-data-redis 支持的基本能够满足对redis的操作,提供了2种客户端连接,也支持redis集群的模式。如果涉及到利用redis做分布式锁的话,redisson封装了更多的工具和基础原子对象进行操作,redisson是优先选择,其次redisson兼容了很多的框架,那么多star不是没有道理的= =。同时也可以通过redisson与RxJava结合,实现线程安全的异步任务等等。